﻿using socialnetworkApp.Domain.Dto.Input;
using socialnetworkApp.Domain.Dto.Output;
using socialnetworkApp.Domain;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using socialnetworkApp.Domain.Models;

namespace socialnetworkApp.Service.AdminService
{
    public interface IAdminService
    {
        /// <summary>
        /// 用户管理页面
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<ResponseResult<UsersListOutput>> GetUserListInfo(GetUserListInput input);
        Task<ResponseResult<toAssignRoleListOutput>> toAssign(string userid);
        Task<ResponseResult<string>> UserAssignRoleAsync(AssignRoleInput assignRoleInput);

        Task<ResponseResult<string>> CreateUser(AddUserInput addUserInput );

        Task<ResponseResult<string>> DeleteUser(string userid);

        Task<ResponseResult<string>> EditUser(InputUserDto inputUser);

        /// <summary>
        /// 角色管理
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<ResponseResult<RoleListOutput>> GetRoleListInfo(GetRoleListInput input);

        Task<ResponseResult<string>> AddRoleInfo(AddRoleInfoInput input);

        Task<ResponseResult<List<GetPermissionInfoOutput>>> GetPermissionInfo();
        Task<ResponseResult<List<GetPermissionInfoOutput>>> GetPermissionInfoById(string RoleId);
        Task<ResponseResult<string>> AddPermissionInfo(AddPermissionDto addPermission);
        Task<ResponseResult<string>> RemovePermissionInfo(string pid);

        Task<ResponseResult<string>> AssignPermissionsToRole(string roleId, List<string> permissionId);

        }
}
